<?php

namespace App\Repositories\Contracts;

/**
 * interface  RepositoryInterface.
 * @package namespace App\Repositories\Contracts;
 */
interface RepositoryInterface
{
    /**
     * 获取列表(有分页)
     *
     * @param int $perPage 每页数量
     * @param array $filter 筛选条件
     * @return array
     */
    public function paginate($perPage, $filter);

    /**
     * 根据id查询详情
     * @param int $id
     * @return array
     */
    public function find($id, $columns = ['*']);

    /**
     * 根据where条件查询详情
     * @param int $id
     * @return array
     */
    public function findByFilter($filter, $columns = ['*']);

    /**
     * 新增
     * @param array $data
     * @return int
     */
    public function store($data);

    /**
     * 修改
     * @param array $data
     * @param int $id
     * @return mixed
     */
    public function update($data, $id);

    /**
     * 根据where条件修改
     * @param int $id
     * @return array
     */
    public function updateByFilter($data, $filter);

    /**
     * 删除
     * @param int $id
     * @return bool
     */
    public function delete($id);
}
